The peer-to-peer communications model involves a set of nodes (such as computers or devices) connected over a network that cooperate in the distribution of one or more data streams. This model differs from more conventional communications models by permitting a node that is receiving a portion of the data stream to redistribute it to other nodes, thereby reducing the communications strain on the source of the data stream and amplifying the availability and potential throughput of the source stream to other nodes.
A peer-to-peer communications session may be established over networks and among clients that have many properties relevant to the throughput of the network, such as the uploading and downloading capacity of the nodes; an uploading communications cap that limits the number of outbound connections that may be established by a node; and the full or partial interconnectedness of the nodes (i.e., whether any node is able to reach the full set of nodes or only a neighboring subset thereof.) The number of data streams generated and shared among the nodes may also be relevant; e.g., a single data stream may be shared by a single source and redistributed among the nodes (such as in an IP television scenario), or a plurality of data streams may be shared by multiple sources to be redistributed to the nodes (such as in a conferencing scenario.) Moreover, some nodes may cooperate as helpers by optionally participating in the session, such that the helper does not consume the data stream (and may be excluded from a portion of the data stream) but may be utilized for redistributing a portion of the data stream to other nodes. These and other properties of the network topology and capacity, the roles and capabilities of the nodes, and the nature of the data streams to be shared may affect the achievable throughput of the data streams in the peer-to-peer communications session.